home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 20
/
Cream of the Crop 20 (Terry Blount) (1996).iso
/
utility
/
freedos.zip
/
COM050.ZIP
/
PROMPT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-17
|
3KB
|
153 lines
/*
* PROMPT.C - prompt handling.
*
*
*
* Comments:
*
* 14/01/95 (Tim Normal) ---------------------------------------------------
* started.
*
* 08/08/95 (Matt Rains) ---------------------------------------------------
* i have cleaned up the source code. changes now bring this source into
* guidelines for recommended programming practice.
*
* 01/06/96 (Tim Norman) --------------------------------------------
* added day of the week printing (oops, forgot about that!)
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <ctype.h>
#include <dir.h>
#include <string.h>
static char days[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
/*
*
* print the command-line prompt
*
*/
void printprompt(void)
{
struct time t;
struct dosdate_t d;
static char default_pr[] = "$P$G";
char *pr;
char direc[128];
char temp[128];
pr = getenv("PROMPT"); /* get PROMPT environment var. */
if(!pr || !pr[0]) /* if PROMPT hasn't been set */
{
pr = default_pr;
}
while(*pr)
{
if(*pr != '$')
{
putchar (*pr);
}
else
{
pr++;
switch(toupper(*pr))
{
case 'Q' :
{
putchar ('=');
break;
}
case '$' :
{
putchar('$');
break;
}
case 'T' :
{
gettime(&t);
printf("%2d:%02d:%02d.%02d", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
break;
}
case 'D' :
{
_dos_getdate (&d);
printf("%s %02d-%02d-%04d", days[d.dayofweek], d.month,
d.day, d.year);
break;
}
case 'P' :
{
direc[0] = getdisk() + 'A';
direc[1] = ':';
getcurdir(0, temp);
if(temp[0] == '\\')
{
strcpy(&direc[2], temp);
}
else
{
direc[2] = '\\';
strcpy(&direc[3], temp);
}
printf("%s", direc);
break;
}
case 'V' :
{
printf("FreeDOS Alpha");
break;
}
case 'N' :
{
printf("%c", getdisk () + 'A');
break;
}
case 'G' :
{
putchar('>');
break;
}
case 'L' :
{
putchar('<');
break;
}
case 'B' :
{
putchar('|');
break;
}
case '_' :
{
putchar('\n');
break;
}
case 'E' :
{
putchar(27);
break;
}
case 'H' :
{
putchar(8);
break;
}
}
}
pr++;
}
return;
}